package in.lib.manager; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.widget.ImageView; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.DisplayImageOptions.Builder; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.assist.LoadedFrom; import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; import in.rob.client.R; import lombok.Getter; public class ImageOptionsManager { @Getter private final DisplayImageOptions avatarImageOptions; @Getter private final DisplayImageOptions coverImageOptions; @Getter private final DisplayImageOptions mediaImageOptions; @Getter private final DisplayImageOptions inlineMediaImageOptions; @Getter private final DisplayImageOptions centerPostMediaOptions; @Getter private final DisplayImageOptions threadAvatarImageOptions; private static ImageOptionsManager instance; public static ImageOptionsManager getInstance() { if (instance == null) { synchronized (ImageOptionsManager.class) { if (instance == null) { instance = new ImageOptionsManager(); } } } return instance; } private ImageOptionsManager() { ImageFader avatarFader = new ImageFader(400); Builder avatarImageOptionsBuilder = new DisplayImageOptions.Builder(); avatarImageOptionsBuilder.cacheInMemory(true); avatarImageOptionsBuilder.cacheOnDisc(true); avatarImageOptionsBuilder.displayer(avatarFader); avatarImageOptionsBuilder.bitmapConfig(Config.RGB_565); avatarImageOptionsBuilder.showStubImage(R.drawable.default_avatar); avatarImageOptionsBuilder.showImageForEmptyUri(R.drawable.default_avatar); avatarImageOptionsBuilder.imageScaleType(ImageScaleType.EXACTLY_STRETCHED); avatarImageOptionsBuilder.resetViewBeforeLoading(true); Builder coverImageOptionsBuilder = new DisplayImageOptions.Builder(); coverImageOptionsBuilder.cacheInMemory(true); coverImageOptionsBuilder.cacheOnDisc(true); coverImageOptionsBuilder.showStubImage(R.drawable.default_cover); coverImageOptionsBuilder.showImageForEmptyUri(R.drawable.default_cover); coverImageOptionsBuilder.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2); coverImageOptionsBuilder.resetViewBeforeLoading(true); Builder threadAvatarImageOptionsBuilder = new DisplayImageOptions.Builder(); threadAvatarImageOptionsBuilder.cacheInMemory(true); threadAvatarImageOptionsBuilder.cacheOnDisc(true); threadAvatarImageOptionsBuilder.bitmapConfig(Config.RGB_565); threadAvatarImageOptionsBuilder.showStubImage(R.drawable.default_avatar); threadAvatarImageOptionsBuilder.showImageForEmptyUri(R.drawable.default_avatar); threadAvatarImageOptionsBuilder.imageScaleType(ImageScaleType.EXACTLY_STRETCHED); threadAvatarImageOptionsBuilder.resetViewBeforeLoading(true); Builder mediaImageOptionsBuilder = new DisplayImageOptions.Builder(); mediaImageOptionsBuilder.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2); mediaImageOptionsBuilder.bitmapConfig(Config.RGB_565); mediaImageOptionsBuilder.resetViewBeforeLoading(true); mediaImageOptionsBuilder.cacheInMemory(true); mediaImageOptionsBuilder.cacheOnDisc(true); Builder inlineMediaImageOptionsBuilder = new DisplayImageOptions.Builder(); inlineMediaImageOptionsBuilder.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2); inlineMediaImageOptionsBuilder.bitmapConfig(Config.RGB_565); inlineMediaImageOptionsBuilder.resetViewBeforeLoading(true); inlineMediaImageOptionsBuilder.displayer(avatarFader); inlineMediaImageOptionsBuilder.cacheInMemory(true); Builder centerPostMediaOptionsBuilder = new DisplayImageOptions.Builder(); centerPostMediaOptionsBuilder.imageScaleType(ImageScaleType.EXACTLY_STRETCHED); centerPostMediaOptionsBuilder.bitmapConfig(Config.RGB_565); centerPostMediaOptionsBuilder.cacheInMemory(true); avatarImageOptions = avatarImageOptionsBuilder.build(); coverImageOptions = coverImageOptionsBuilder.build(); threadAvatarImageOptions = threadAvatarImageOptionsBuilder.build(); mediaImageOptions = mediaImageOptionsBuilder.build(); inlineMediaImageOptions = inlineMediaImageOptionsBuilder.build(); centerPostMediaOptions = centerPostMediaOptionsBuilder.build(); } public static class ImageFader extends FadeInBitmapDisplayer { public ImageFader(int delay) { super(delay); } @Override public Bitmap display(Bitmap bitmap, ImageView imageView, LoadedFrom loadedFrom) { if (loadedFrom != LoadedFrom.MEMORY_CACHE) { return super.display(bitmap, imageView, loadedFrom); } else { imageView.setImageBitmap(bitmap); return bitmap; } } } }